package org.footballmanager.pandafootball.system.service;

import org.footballmanager.pandafootball.system.domain.FootBfDetail;
import org.footballmanager.pandafootball.system.domain.FootBfinfo;
import org.footballmanager.pandafootball.system.form.impl.FootBfDetailSearchForm;
import org.springframework.ui.Model;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

public interface FootBfDetailService extends BaseService<FootBfDetail> {
    /**
     * 查询
     *
     * @param entityname             实体类名
     * @param map                    参数
     * @param footBfDetailSearchForm 条件
     */
    void search(String entityname, Model map, FootBfDetailSearchForm footBfDetailSearchForm);

    /**
     * 删除所有
     *
     * @param footBfDetailSearchForm 条件
     * @param request                请求
     */
    void deleteAll(FootBfDetailSearchForm footBfDetailSearchForm, HttpServletRequest request);

    /**
     * 根据报分记录查找对应详情
     *
     * @param bfId 报分主键
     * @return 详情记录列表
     */
    List<FootBfDetail> findByBfId(Long bfId);

    /**
     * 根据报分主键和进球球员关系主键查找记录数量
     *
     * @param bfId    报分主键
     * @param jqFupId 进球球员关系主键
     * @return 记录数量
     */
    Integer findByBfIdAndJqId(Long bfId, Long jqFupId);

    /**
     * 根据报分主键和进球球员关系主键查找记录数量
     *
     * @param bfId    报分主键
     * @param zgFupId 助攻球员关系主键
     * @return 记录数量
     */
    Integer findByBfIdAndZgId(Long bfId, Long zgFupId);

    /**
     * 保存记录
     *
     * @param team    球队主键
     * @param type    类型
     * @param ids     球员关系主键
     * @param nums    对应类型的数量
     * @param request 请求
     */
    void saveEntityTemp(Long team, Integer type, String ids, String nums, HttpServletRequest request);

    /**
     * 从redis里取出并保存记录
     *
     * @param footBfinfo 报分实体类
     * @param request    请求
     */
    void saveEntity(FootBfinfo footBfinfo, HttpServletRequest request);

    /**
     * 射手榜
     * @return 射手榜
     */
    List<FootBfDetail> findJqTop10();

    /**
     * 助攻榜
     * @return
     */
    List<FootBfDetail> findZgTop10();
}